package com.mlh.linkedlist;

import com.sun.media.jfxmediaimpl.HostUtils;

// 给定一个单链表 L 的头节点 head ，单链表 L 表示为：
// L0 → L1 → … → Ln - 1 → Ln
// 请将其重新排列后变为：
// L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
// 不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。

//题目理解错了  不过程序能跑
//自己运行一下就知道
public class ReorderList {
    public static void main(String[] args) {
        ListNode head = ListNode.createLinkedList(new int[]{1,2,3,4});
        method1(head);
    }
    //
    public static void method1(ListNode head) {
        if(head.next==null||head.next.next==null){
            return;
        }
        ListNode temp=head;
        ListNode newFakeHead=new ListNode(0);
        while (temp!=null&&temp.next!=null){
            ListNode temp2=newFakeHead.next;
            newFakeHead.next=temp.next;
            temp.next=temp.next.next;
            newFakeHead.next.next=temp2;
            temp=temp.next;
        }
        ListNode.show(head);
        ListNode.show(newFakeHead);
        temp=head;
        while (newFakeHead.next!=null){
            ListNode temp3=temp.next;
            temp.next=newFakeHead.next;
            newFakeHead.next=newFakeHead.next.next;
            temp.next.next=temp3;
            temp=temp.next.next;
        }
        ListNode.show(head);
    }
}
